package com.nefu.softlab.xjwc.mapper;

import com.nefu.softlab.xjwc.model.Activity;
import com.nefu.softlab.xjwc.model.Project;
import com.nefu.softlab.xjwc.model.Score;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author : Ar1es
 * @date : 2020/2/8
 * @since : Java 8
 */
@Mapper
@Repository
public interface ProjectMapper {

    /**
     * 添加项目
     * @param project
     * @return
     */
    int insertProject(Project project);

    @Select("select name from project where name = #{arg0} limit 1")
    List<String> selectProjectNameByName(String name);

    /**
     * 修改项目
     * @param project
     * @return
     */
    int updateProject(Project project);

    /**
     * 删除项目
     * @param project
     * @return
     */
    int deleteProject(Project project);

    /**
     * 查看所有项目
     * 根据活动id查活动下面所有的项目
     * @return
     */
    List<Project> selectAllProject(Project project);

    /**
     * 查看所有项目
     * 联合查询document和project
     * 根据项目id查询项目和网络文件url信息
     * @param project
     * @return
     */
    List<Project> selectAllProject1(Project project);

    /**
     * 查看所有项目
     * 根据projectId
     * @param project
     * @return
     */
    List<Project> selectAllProject2(Project project);

    /**
     * 根据关键字查询项目,这个前端没写
     * @param keyword
     * @return
     */
    List<Project> selectProjectByKeyword(String keyword);

    /**
     * 根据分数查询
     * @return
     */
    List<Project> selectSortProject();

    /**
     * 根据活动id和项目名获取活动id
     *
     * @param activityId
     * @param name
     * @return
     */
    Object selectProIdByActivityId(Integer activityId, String name);

    /**
     * 根据activityID获取项目
     * @param activityId
     * @return
     */
    List<Project> selectAllProjectByActivityId(Integer activityId);

    /**
     * 根据活动id删除所有项目
     * @param activityId
     * @return
     */
    boolean deleteProjectsByActivityId(Integer activityId);


    @Update("update project set score = #{score} where project_id = #{projectId}")
    int updateProjectScore(Score score);


    @Select("select name from project where project_id = #{projectId} limit 1")
    String selectProjectName(Integer projectId);

    /**
     * 根据活动id查询下面所有项目信息，不包含文件信息。用来查分数用的。
     * @param activityId
     * @return
     */
    List<Project> selectAllProjectByActivityIdNoContainsFile(Integer activityId);
}
